package cn.kgc.tangcco.tcbd1011.no13.base.util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * @author 22900
 * 读取c3p0-config  xml文件 
 * 获得数据库连接
 *
 */
public class JDBCUtils {
	//获取数据库连接缓存对象
	private static DataSource dataSource;
	//为保证Connection类只new一次的对象, 创建一个ThreadLocal类封装Connection对象
	private static ThreadLocal<Connection> tl =  new ThreadLocal<>();
	static{
		//使用c3p0提供的jar包new 一个 小型的数据库连接池 读取c3p0-fig.XML文档 ,参数为文档内 named-config元素下的 name 属性值
		dataSource = new ComboPooledDataSource("no.13_group-vehiclemanagementsystem");
	}
	//提供一个返回数据库连接DataSource的静态方法
	public static DataSource getDataSource() {
		return dataSource;
	}
	//提供一个返回数据库连接Connection的方法，主要为了处理删除方法的事务处理,且只能new一次
	public static Connection getConnection() {
		Connection conn = tl.get();	
		 if ( conn == null ) {
			 try {
				conn = dataSource.getConnection();
				tl.set(conn);
			} catch (SQLException e) {
				System.out.println("JDBC内给conn赋值出现问题");
				e.printStackTrace();
			}			
		 }		
		return conn;
	}
	
}
